package com.zxy.pojo.vo;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import java.math.BigDecimal;
import java.util.List;


/**
 * 活动创建请求参数VO（接收前端传递的参数）
 */
@Data
public class ActivityCreateVO {
    /** 活动名称（动态输入，非空，长度1-50） */
    @NotBlank(message = "活动名称不能为空")
    @Length(min = 1, max = 50, message = "活动名称长度需在1-50字符之间")
    private String name;

    /** 活动简介（动态输入，非空，长度1-200） */
    @NotBlank(message = "活动简介不能为空")
    @Length(min = 1, max = 200, message = "活动简介长度需在1-200字符之间")
    private String info;

    /** 渠道类型（从字典接口选择，非空，如"0"） */
    @NotBlank(message = "渠道类型不能为空，请从字典选择")
    private String channel;

    /** 活动类型（从字典接口选择，非空，如"1"） */
    @NotBlank(message = "活动类型不能为空，请从字典选择")
    private String type;

    /** 折扣率（动态输入，非空，大于0且小于等于1，如0.1表示10%） */

    private BigDecimal discount;

    /** 活动时间数组（前端传递的["开始时间","结束时间"]，非空且长度为2） */
    @NotEmpty(message = "活动时间不能为空，请选择开始和结束时间")
    @Size(min = 2, max = 2, message = "活动时间需包含开始时间和结束时间")
    private List<@Pattern(regexp = "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}$",
                             message = "活动时间格式错误，需为'yyyy-MM-dd HH:mm'") String> activityTime;

    /** 活动状态（默认为null，前端可不传） */
    private String status;

    // 【辅助方法】解析activityTime为beginTime字符串（用于后续转LocalDateTime）
    public String getBeginTimeStr() {
        return activityTime.get(0); // activityTime[0]是开始时间
    }

    // 【辅助方法】解析activityTime为endTime字符串（用于后续转LocalDateTime）
    public String getEndTimeStr() {
        return activityTime.get(1); // activityTime[1]是结束时间
    }
}